/*
 * Copyright (c) 2012 SUBSECRETARIA DEFENSORIA DEL ESPACIO PUBLICO - SDEP.
 * All Rights Reserved.
 * This software is the confidential and proprietary information of SDEP
 * Developed By CONSTULT-SOFT S.A, Development Team 2012.
 *
 */
package co.gov.medellin.sdep.sisdep.model;

import co.gov.medellin.sdep.sisdep.common.OracleHelper;

/**
 * <p>
 * Entidad que mapea con la tabla SISDEP.GES_MODULO_T.
 * </p>
 * <p>
 * Copyright (c) 2012<BR>
 * Consult-Soft S.A.<BR>
 * Created on: May 01, 2012<BR>
 * 
 * @author atabares
 * </p>
 */
public class Modulo implements java.io.Serializable {

	/** Serial key. */
	private static final long serialVersionUID = -4893773637709056177L;

	/** Identificador del registro. */
	private java.lang.Long id;

	/** Codigo asociado al modulo. */
	private java.lang.String codigo;

	/** Identificador del diseno del modulo. */
	private java.lang.Long idModuloDiseno;

	/** Nombre del diseno del modulo. */
	private java.lang.String moduloDiseno;

	/** Direccion del modulo para geo referenciacion mapas medellin. */
	private java.lang.String direccionModulo;

	/** Identificador del barrio. */
	private java.lang.String codigoBarrio;

	/** Nombre del barrio. */
	private java.lang.String barrio;

	/** Identificador de la comuna. */
	private java.lang.String codigoComuna;

	/** Nombre de la comuna. */
	private java.lang.String comuna;

	/** Estado actual del modulo (al dia/en mora). */
	private java.lang.String estadoFinanciero;

	/** Valor actual de la contraprestacion economica del modulo. */
	private java.lang.Long valorContraprestacion;

	/** Monto total en mora. */
	private java.lang.Long valorMora;

	/** Indica si el modulo se le debe tener en cuenta para generar facturacion (SDEP) S/N. */
	private java.lang.String factura;
	
	/** Usado para el manejo del checkbox Factura. */
	private boolean facturaBool;

	/** Identificador del tipo de energia utilizado (prepago/conexion/otro)). */
	private java.lang.Long tipoEnergia;
	
	/** String que identifica el tipo de energia utilizado (prepago/conexion/otro)). */
	private java.lang.String tipoEnergiaStr;

	/** Nombre del tipo de energia utilizado (prepago/conexion/otro)). */
	private java.lang.String energia;
	
	/** Codigo asociado al modulo en hacienda. */
	private java.lang.String plaquetaHacienda;

	/** Estado actual del modulo en SISDEP. */
	private java.lang.String estado;

	/** Identifica login del usuario que crea el registro. */
	private java.lang.String usuarioCrea;

	/** Identifica la fecha, hora del sistema en la que se crea el registro. */
	private java.util.Date fechaCrea;

	/** Identifica login del usuario que actualiza el registro. */
	private java.lang.String usuarioModifica;

	/** Identifica la fecha, hora del sistema en la que se actualiza el registro. */
	private java.util.Date fechaModifica;
	
	/** Estado fisico o descripcion del modulo. */
	private java.lang.String descripcion;
	
	/** Indica si la operacion que se esta ejecutando es una actualizacion. */
	private boolean actualizacion;
	
	/** Es un String que indica si la operacion que se esta ejecutando es una actualizacion. */
	private String actualizacionStr;
	
	/** Numero del contrato asociado al modulo. */
	private java.lang.String contrato;
	
	
	/**
	 * @param actualizacion
	 */
	public Modulo() {
		this.actualizacion = false;
	}

	/**
	 * Obtiene el parametro id.
	 * @see Modulo#id
	 *
	 * @return El parametro id.
	 */
	public java.lang.Long getId() {
		return id;
	}

	/**
	 * Asigna el parametro id.
	 * @see Modulo#id
	 *
	 * @param id valor a asignar al parametro id.
	 */
	public void setId(java.lang.Long id) {
		this.id = id;
	}

	/**
	 * Obtiene el parametro codigo.
	 * @see Modulo#codigo
	 *
	 * @return El parametro codigo.
	 */
	public java.lang.String getCodigo() {
		return codigo;
	}

	/**
	 * Asigna el parametro codigo.
	 * @see Modulo#codigo
	 *
	 * @param codigo valor a asignar al parametro codigo.
	 */
	public void setCodigo(java.lang.String codigo) {
		this.codigo = codigo;
	}

	/**
	 * Obtiene el parametro idModuloDiseno.
	 * @see Modulo#idModuloDiseno
	 *
	 * @return El parametro idModuloDiseno.
	 */
	public java.lang.Long getIdModuloDiseno() {
		return idModuloDiseno;
	}

	/**
	 * Asigna el parametro idModuloDiseno.
	 * @see Modulo#idModuloDiseno
	 *
	 * @param idModuloDiseno valor a asignar al parametro idModuloDiseno.
	 */
	public void setIdModuloDiseno(java.lang.Long idModuloDiseno) {
		this.idModuloDiseno = idModuloDiseno;
	}

	/**
	 * Obtiene el parametro moduloDiseno.
	 * @see Modulo#moduloDiseno
	 *
	 * @return El parametro moduloDiseno.
	 */
	public java.lang.String getModuloDiseno() {
		return moduloDiseno;
	}

	/**
	 * Asigna el parametro moduloDiseno.
	 * @see Modulo#moduloDiseno
	 *
	 * @param moduloDiseno valor a asignar al parametro moduloDiseno.
	 */
	public void setModuloDiseno(java.lang.String moduloDiseno) {
		this.moduloDiseno = moduloDiseno;
	}

	/**
	 * Obtiene el parametro direccionModulo.
	 * @see Modulo#direccionModulo
	 *
	 * @return El parametro direccionModulo.
	 */
	public java.lang.String getDireccionModulo() {
		return direccionModulo;
	}

	/**
	 * Asigna el parametro direccionModulo.
	 * @see Modulo#direccionModulo
	 *
	 * @param direccionModulo valor a asignar al parametro direccionModulo.
	 */
	public void setDireccionModulo(java.lang.String direccionModulo) {
		this.direccionModulo = direccionModulo;
	}

	/**
	 * Obtiene el parametro codigoBarrio.
	 * @see Modulo#codigoBarrio
	 *
	 * @return El parametro codigoBarrio.
	 */
	public java.lang.String getCodigoBarrio() {
		return codigoBarrio;
	}

	/**
	 * Asigna el parametro codigoBarrio.
	 * @see Modulo#codigoBarrio
	 *
	 * @param codigoBarrio valor a asignar al parametro codigoBarrio.
	 */
	public void setCodigoBarrio(java.lang.String codigoBarrio) {
		this.codigoBarrio = codigoBarrio;
	}

	/**
	 * Obtiene el parametro barrio.
	 * @see Modulo#barrio
	 *
	 * @return El parametro barrio.
	 */
	public java.lang.String getBarrio() {
		return barrio;
	}

	/**
	 * Asigna el parametro barrio.
	 * @see Modulo#barrio
	 *
	 * @param barrio valor a asignar al parametro barrio.
	 */
	public void setBarrio(java.lang.String barrio) {
		this.barrio = barrio;
	}

	/**
	 * Obtiene el parametro codigoComuna.
	 * @see Modulo#codigoComuna
	 *
	 * @return El parametro codigoComuna.
	 */
	public java.lang.String getCodigoComuna() {
		return codigoComuna;
	}

	/**
	 * Asigna el parametro codigoComuna.
	 * @see Modulo#codigoComuna
	 *
	 * @param codigoComuna valor a asignar al parametro codigoComuna.
	 */
	public void setCodigoComuna(java.lang.String codigoComuna) {
		this.codigoComuna = codigoComuna;
	}

	/**
	 * Obtiene el parametro comuna.
	 * @see Modulo#comuna
	 *
	 * @return El parametro comuna.
	 */
	public java.lang.String getComuna() {
		return comuna;
	}

	/**
	 * Asigna el parametro comuna.
	 * @see Modulo#comuna
	 *
	 * @param comuna valor a asignar al parametro comuna.
	 */
	public void setComuna(java.lang.String comuna) {
		this.comuna = comuna;
	}

	/**
	 * Obtiene el parametro estadoFinanciero.
	 * @see Modulo#estadoFinanciero
	 *
	 * @return El parametro estadoFinanciero.
	 */
	public java.lang.String getEstadoFinanciero() {
		return estadoFinanciero;
	}

	/**
	 * Asigna el parametro estadoFinanciero.
	 * @see Modulo#estadoFinanciero
	 *
	 * @param estadoFinanciero valor a asignar al parametro estadoFinanciero.
	 */
	public void setEstadoFinanciero(java.lang.String estadoFinanciero) {
		this.estadoFinanciero = estadoFinanciero;
	}

	/**
	 * Obtiene el parametro valorContraprestacion.
	 * @see Modulo#valorContraprestacion
	 *
	 * @return El parametro valorContraprestacion.
	 */
	public java.lang.Long getValorContraprestacion() {
		return valorContraprestacion;
	}

	/**
	 * Asigna el parametro valorContraprestacion.
	 * @see Modulo#valorContraprestacion
	 *
	 * @param valorContraprestacion valor a asignar al parametro valorContraprestacion.
	 */
	public void setValorContraprestacion(java.lang.Long valorContraprestacion) {
		this.valorContraprestacion = valorContraprestacion;
	}

	/**
	 * Obtiene el parametro valorMora.
	 * @see Modulo#valorMora
	 *
	 * @return El parametro valorMora.
	 */
	public java.lang.Long getValorMora() {
		return valorMora;
	}

	/**
	 * Asigna el parametro valorMora.
	 * @see Modulo#valorMora
	 *
	 * @param valorMora valor a asignar al parametro valorMora.
	 */
	public void setValorMora(java.lang.Long valorMora) {
		this.valorMora = valorMora;
	}

	/**
	 * Obtiene el parametro factura.
	 * @see Modulo#factura
	 *
	 * @return El parametro factura.
	 */
	public java.lang.String getFactura() {
		return factura;
	}

	/**
	 * Asigna el parametro factura.
	 * @see Modulo#factura
	 *
	 * @param factura valor a asignar al parametro factura.
	 */
	public void setFactura(java.lang.String factura) {
		this.factura = factura;
	}
	
	/**
	 * Obtiene el parametro factura como un booleano.
	 * @see Modulo#facturaBool
	 *
	 * @return El parametro factura como un booleano.
	 */
	public boolean isFacturaBool() {
		if (!OracleHelper.isNullorEmpty(this.factura)) {
			return OracleHelper.string2boolean(this.factura);
		}
		
		return false;
	}

	/**
	 * Asigna el parametro facturaBool.
	 * @see Modulo#facturaBool
	 *
	 * @param facturaBool valor a asignar al parametro facturaBool.
	 */
	public void setFacturaBool(boolean facturaBool) {
		this.facturaBool = facturaBool;
		this.factura = OracleHelper.boolean2string(this.facturaBool);
	}

	/**
	* Obtiene el parametro tipoEnergia.
	* @see Modulo#tipoEnergia
	*
	* @return El parametro tipoEnergia.
	*/
	public java.lang.Long getTipoEnergia() {
		if (!OracleHelper.isNullorEmpty(this.tipoEnergiaStr)) {
			return new Long(this.tipoEnergiaStr);
		}
		
		return tipoEnergia;
	}

	/**
	* Asigna el parametro tipoEnergia.
	* @see Modulo#tipoEnergia
	*
	* @param tipoEnergia valor a asignar al parametro tipoEnergia.
	*/
	public void setTipoEnergia(java.lang.Long tipoEnergia) {
		this.tipoEnergia = tipoEnergia;
	}

	/**
	* Obtiene el parametro tipoEnergiaStr.
	* @see Modulo#tipoEnergiaStr
	*
	* @return El parametro tipoEnergiaStr.
	*/
	public java.lang.String getTipoEnergiaStr() {
		if (this.tipoEnergia != null) {
			return this.tipoEnergia.toString();
		}
		
		return tipoEnergiaStr;
	}

	/**
	* Asigna el parametro tipoEnergiaStr.
	* @see Modulo#tipoEnergiaStr
	*
	* @param tipoEnergiaStr valor a asignar al parametro tipoEnergiaStr.
	*/
	public void setTipoEnergiaStr(java.lang.String tipoEnergiaStr) {
		this.tipoEnergiaStr = tipoEnergiaStr;
	}

	/**
	* Obtiene el parametro energia.
	* @see Modulo#energia
	*
	* @return El parametro energia.
	*/
	public java.lang.String getEnergia() {
		return energia;
	}

	/**
	* Asigna el parametro energia.
	* @see Modulo#energia
	*
	* @param energia valor a asignar al parametro energia.
	*/
	public void setEnergia(java.lang.String energia) {
		this.energia = energia;
	}

	/**
	 * Obtiene el parametro plaquetaHacienda.
	 * @see Modulo#plaquetaHacienda
	 *
	 * @return El parametro plaquetaHacienda.
	 */
	public java.lang.String getPlaquetaHacienda() {
		return plaquetaHacienda;
	}

	/**
	 * Asigna el parametro plaquetaHacienda.
	 * @see Modulo#plaquetaHacienda
	 *
	 * @param plaquetaHacienda valor a asignar al parametro plaquetaHacienda.
	 */
	public void setPlaquetaHacienda(java.lang.String plaquetaHacienda) {
		this.plaquetaHacienda = plaquetaHacienda;
	}

	/**
	 * Obtiene el parametro estado.
	 * @see Modulo#estado
	 *
	 * @return El parametro estado.
	 */
	public java.lang.String getEstado() {
		return estado;
	}

	/**
	 * Asigna el parametro estado.
	 * @see Modulo#estado
	 *
	 * @param estado valor a asignar al parametro estado.
	 */
	public void setEstado(java.lang.String estado) {
		this.estado = estado;
	}

	/**
	 * Obtiene el parametro usuarioCrea.
	 * @see Modulo#usuarioCrea
	 *
	 * @return El parametro usuarioCrea.
	 */
	public java.lang.String getUsuarioCrea() {
		return usuarioCrea;
	}

	/**
	 * Asigna el parametro usuarioCrea.
	 * @see Modulo#usuarioCrea
	 *
	 * @param usuarioCrea valor a asignar al parametro usuarioCrea.
	 */
	public void setUsuarioCrea(java.lang.String usuarioCrea) {
		this.usuarioCrea = usuarioCrea;
	}

	/**
	 * Obtiene el parametro fechaCrea.
	 * @see Modulo#fechaCrea
	 *
	 * @return El parametro fechaCrea.
	 */
	public java.util.Date getFechaCrea() {
		return fechaCrea;
	}

	/**
	 * Asigna el parametro fechaCrea.
	 * @see Modulo#fechaCrea
	 *
	 * @param fechaCrea valor a asignar al parametro fechaCrea.
	 */
	public void setFechaCrea(java.util.Date fechaCrea) {
		this.fechaCrea = fechaCrea;
	}

	/**
	 * Obtiene el parametro usuarioModifica.
	 * @see Modulo#usuarioModifica
	 *
	 * @return El parametro usuarioModifica.
	 */
	public java.lang.String getUsuarioModifica() {
		return usuarioModifica;
	}

	/**
	 * Asigna el parametro usuarioModifica.
	 * @see Modulo#usuarioModifica
	 *
	 * @param usuarioModifica valor a asignar al parametro usuarioModifica.
	 */
	public void setUsuarioModifica(java.lang.String usuarioModifica) {
		this.usuarioModifica = usuarioModifica;
	}

	/**
	 * Obtiene el parametro fechaModifica.
	 * @see Modulo#fechaModifica
	 *
	 * @return El parametro fechaModifica.
	 */
	public java.util.Date getFechaModifica() {
		return fechaModifica;
	}

	/**
	 * Asigna el parametro fechaModifica.
	 * @see Modulo#fechaModifica
	 *
	 * @param fechaModifica valor a asignar al parametro fechaModifica.
	 */
	public void setFechaModifica(java.util.Date fechaModifica) {
		this.fechaModifica = fechaModifica;
	}

	/**
	* Obtiene el parametro descripcion.
	* @see Modulo#descripcion
	*
	* @return El parametro descripcion.
	*/
	public java.lang.String getDescripcion() {
		return descripcion;
	}

	/**
	* Asigna el parametro descripcion.
	* @see Modulo#descripcion
	*
	* @param descripcion valor a asignar al parametro descripcion.
	*/
	public void setDescripcion(java.lang.String descripcion) {
		this.descripcion = descripcion;
	}

	/**
	* Obtiene el parametro actualizacion.
	* @see Modulo#actualizacion
	*
	* @return El parametro actualizacion.
	*/
	public boolean isActualizacion() {
		return actualizacion;
	}

	/**
	* Asigna el parametro actualizacion.
	* @see Modulo#actualizacion
	*
	* @param actualizacion valor a asignar al parametro actualizacion.
	*/
	public void setActualizacion(boolean actualizacion) {
		this.actualizacion = actualizacion;
	}

	/**
	* Obtiene el parametro actualizacionStr.
	* @see Modulo#actualizacionStr
	*
	* @return El parametro actualizacionStr.
	*/
	public String getActualizacionStr() {
		return OracleHelper.boolean2string(this.actualizacion);
	}

	/**
	* Asigna el parametro actualizacionStr.
	* @see Modulo#actualizacionStr
	*
	* @param actualizacionStr valor a asignar al parametro actualizacionStr.
	*/
	public void setActualizacionStr(String actualizacionStr) {
		this.actualizacionStr = actualizacionStr;
	}

	/**
	* Obtiene el parametro contrato.
	* @see Modulo#contrato
	*
	* @return El parametro contrato.
	*/
	public java.lang.String getContrato() {
		return contrato;
	}

	/**
	* Asigna el parametro contrato.
	* @see Modulo#contrato
	*
	* @param contrato valor a asignar al parametro contrato.
	*/
	public void setContrato(java.lang.String contrato) {
		this.contrato = contrato;
	}

}